﻿#region License statement
// NJamb, a specification and delta-specification DSL
// Copyright (c) 2010-2011, Mark Knell
// Published under the MIT License; all other rights reserved
#endregion

#region using...
using System;
using NJamb.Parser.Subjects;
using Stile.Patterns.SelfDescribingPredicates;
#endregion

namespace NJamb.Specifications
{
    public interface ICollaboratingSpecification
    {
        Lazy<string> LazyReason { get; }
    }

    public interface ICollaboratingSpecification<out TCollaboratingSubject, out TEvaluation> : ICollaboratingSpecification,
        IEvaluable<TEvaluation>
        where TCollaboratingSubject : class, ICollaboratingSubject
        where TEvaluation : class, IEvaluation
    {
        TCollaboratingSubject CollaboratingSubject { get; }
    }

    public interface ICollaboratingSpecification<out TSubject> :
        ICollaboratingSpecification<ICollaboratingSubject<TSubject>, IEvaluation<TSubject>> {}
}
